package com.gitee.kamismile.stone.rpc.core.proxy.imp.jdk;

import com.gitee.kamismile.stone.rpc.core.invocation.StoneInvokeInvoker;
import com.gitee.kamismile.stone.rpc.core.proxy.IStoneProxy;
import  org.slf4j.LoggerFactory;
import org.slf4j.Logger;

import java.lang.reflect.Proxy;

public class JDKProxy implements IStoneProxy {

    protected static final Logger logger = LoggerFactory.getLogger(JDKProxy.class);

    @Override
    public  <T> T getProxy(StoneInvokeInvoker stoneInvokeInvoker) {
        return (T) Proxy.newProxyInstance(stoneInvokeInvoker.getMapperInterface().getClassLoader(), new Class<?>[]{stoneInvokeInvoker.getMapperInterface()}, new JDKInvocationHandler(stoneInvokeInvoker));
    }
}
